all: $(TARGET)

.extensions:
.extensions: .bin .o .c .asm

CFLAGS += -I$(%ASKEW610SDK_DIR)/clib/include
.asm: $(%ASKEW610SDK_DIR)/clib
.c: $(%ASKEW610SDK_DIR)/clib

CFLAGS += -I$(%ASKEW610SDK_DIR)/bget
.c: $(%ASKEW610SDK_DIR)/bget

CFLAGS += -I$(%ASKEW610SDK_DIR)/openwatcom/include
ASFLAGS += -I$(%ASKEW610SDK_DIR)/openwatcom/include
.asm: $(%ASKEW610SDK_DIR)/openwatcom
.c: $(%ASKEW610SDK_DIR)/openwatcom

CFLAGS += -I$(%ASKEW610SDK_DIR)/sq610/include
.asm: $(%ASKEW610SDK_DIR)/sq610
.c: $(%ASKEW610SDK_DIR)/sq610

!ifdef ASKEW610SDK_INCLUDE_FREERTOS
FREERTOS_DIR = FreeRTOSV7.3.0/FreeRTOS/Source

.c: $(%ASKEW610SDK_DIR)/$(FREERTOS_DIR)
.c: $(%ASKEW610SDK_DIR)/freertos_sq610

CFLAGS += -I$(%ASKEW610SDK_DIR)/$(FREERTOS_DIR)/include &
          -I$(%ASKEW610SDK_DIR)/freertos_sq610/include

OBJS += obj/$(FREERTOS_DIR)/list.o &
        obj/$(FREERTOS_DIR)/queue.o &
        obj/$(FREERTOS_DIR)/tasks.o &
        obj/$(FREERTOS_DIR)/port.o &
        obj/$(FREERTOS_DIR)/portcomn.o &
        obj/freertos_sq610/heap.o
!endif

!ifdef ASKEW610SDK_INCLUDE_LWIP
LWIP_DIR = lwip-1.4.1/src

.c: $(%ASKEW610SDK_DIR)/$(LWIP_DIR)
.c: $(%ASKEW610SDK_DIR)/$(LWIP_DIR)/core
.c: $(%ASKEW610SDK_DIR)/$(LWIP_DIR)/core/ipv4
.c: $(%ASKEW610SDK_DIR)/$(LWIP_DIR)/api
.c: $(%ASKEW610SDK_DIR)/$(LWIP_DIR)/netif
.c: $(%ASKEW610SDK_DIR)/lwip_sq610
.c: $(%ASKEW610SDK_DIR)/lwip_arch

CFLAGS += -I$(%ASKEW610SDK_DIR)/$(LWIP_DIR)/include &
          -I$(%ASKEW610SDK_DIR)/$(LWIP_DIR)/include/ipv4 &
          -I$(%ASKEW610SDK_DIR)/lwip_arch/include &
          -I$(%ASKEW610SDK_DIR)/lwip_sq610/include

OBJS += obj/$(LWIP_DIR)/sys_arch.o &
        obj/$(LWIP_DIR)/def.o &
        obj/$(LWIP_DIR)/dhcp.o &
        obj/$(LWIP_DIR)/dns.o &
        obj/$(LWIP_DIR)/init.o &
        obj/$(LWIP_DIR)/mem.o &
        obj/$(LWIP_DIR)/memp.o &
        obj/$(LWIP_DIR)/netif.o &
        obj/$(LWIP_DIR)/pbuf.o &
        obj/$(LWIP_DIR)/raw.o &
        obj/$(LWIP_DIR)/stats.o &
        obj/$(LWIP_DIR)/sys.o &
        obj/$(LWIP_DIR)/tcp.o &
        obj/$(LWIP_DIR)/tcp_in.o &
        obj/$(LWIP_DIR)/tcp_out.o &
        obj/$(LWIP_DIR)/lwip_timers.o &
        obj/$(LWIP_DIR)/udp.o &
        obj/$(LWIP_DIR)/autoip.o &
        obj/$(LWIP_DIR)/icmp.o &
        obj/$(LWIP_DIR)/igmp.o &
        obj/$(LWIP_DIR)/inet.o &
        obj/$(LWIP_DIR)/inet_chksum.o &
        obj/$(LWIP_DIR)/ip_addr.o &
        obj/$(LWIP_DIR)/ip.o &
        obj/$(LWIP_DIR)/ip_frag.o &
        obj/$(LWIP_DIR)/api_lib.o &
        obj/$(LWIP_DIR)/api_msg.o &
        obj/$(LWIP_DIR)/err.o &
        obj/$(LWIP_DIR)/netbuf.o &
        obj/$(LWIP_DIR)/netdb.o &
        obj/$(LWIP_DIR)/netifapi.o &
        obj/$(LWIP_DIR)/tcpip.o &
        obj/$(LWIP_DIR)/etharp.o
!endif

!ifdef ASKEW610SDK_INCLUDE_LUA
LUA_DIR = lua-5.2.2

.c: $(%ASKEW610SDK_DIR)/$(LUA_DIR)/src

CFLAGS += -I$(%ASKEW610SDK_DIR)/$(LUA_DIR)/src

OBJS += obj/$(LUA_DIR)/lapi.o &
        obj/$(LUA_DIR)/lauxlib.o &
        obj/$(LUA_DIR)/lbaselib.o &
        obj/$(LUA_DIR)/lbitlib.o &
        obj/$(LUA_DIR)/lcode.o &
        obj/$(LUA_DIR)/lcorolib.o &
        obj/$(LUA_DIR)/lctype.o &
        obj/$(LUA_DIR)/ldblib.o &
        obj/$(LUA_DIR)/ldebug.o &
        obj/$(LUA_DIR)/ldo.o &
        obj/$(LUA_DIR)/ldump.o &
        obj/$(LUA_DIR)/lfunc.o &
        obj/$(LUA_DIR)/lgc.o &
        obj/$(LUA_DIR)/llex.o &
        obj/$(LUA_DIR)/lmem.o &
        obj/$(LUA_DIR)/lobject.o &
        obj/$(LUA_DIR)/lopcodes.o &
        obj/$(LUA_DIR)/lparser.o &
        obj/$(LUA_DIR)/lstate.o &
        obj/$(LUA_DIR)/lstring.o &
        obj/$(LUA_DIR)/lstrlib.o &
        obj/$(LUA_DIR)/ltable.o &
        obj/$(LUA_DIR)/ltablib.o &
        obj/$(LUA_DIR)/ltm.o &
        obj/$(LUA_DIR)/lundump.o &
        obj/$(LUA_DIR)/lvm.o &
        obj/$(LUA_DIR)/lzio.o &
        obj/$(LUA_DIR)/linit.o
!endif

.c.o:
        @[ -z "$^:" ] || mkdir -p $^:
        $(CC) $(CFLAGS) -fo=$@ $<

.asm.o:
        @[ -z "$^:" ] || mkdir -p $^:
        $(AS) $(ASFLAGS) -fo=$@ $<

$(TARGET): $(OBJS)
	$(LD) $(LDFLAGS) -o $@ $<

clean: .symbolic
	$(RM) -rf obj *.o *~ *.err $(TARGET)
